#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QMenu>   //菜单库
#include<QAction> //行为库
#include<WeatherTool.h>//引入天气库（自定义库）
#include<QLabel>
#include<QList>

#include<QNetworkAccessManager>

#include<QNetworkReply>
#include<QNetworkRequest>
#include<QByteArray>

#include <QTimer> //定时器库

#include<weatherdata.h>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QWidget
{
    Q_OBJECT

public:

    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    virtual bool eventFilter(QObject* watched,QEvent* event);
    //void paintEvent(QPaintEvent *event);

protected:
    void contextMenuEvent(QContextMenuEvent *event);
    void mousePressEvent(QMouseEvent*event);
    void mouseMoveEvent(QMouseEvent*event);
    void getWeatherInfo(QNetworkAccessManager *manager);
    void parseJson(QByteArray& bytes);//处理json数据的函数
    void setLabelContent();//设置各种json数据对应的文字框
    void paintSunRiseSet();//绘制日出日落图像的函数
    void initWeatherIconMap(); // 初始化映射表
    void paintCurve();


private slots:
    void slot_exitApp();//私有的常函数：功能为关闭窗口
    void replayFinished(QNetworkReply*replay);


    void on_refreshBt_clicked();

    void on_searchBt_clicked();

private:
    Ui::MainWindow *ui;
    QMenu *exitMenu;//右键退出出口
    QAction *exitAct;//退出的行为
    QPoint mPos;//窗口移动需要用的点
    QTimer *sunTimer;//定时器，多久访问一次数据并进行日出日落图绘制的更新

    //UI
    QList<QLabel *> forecast_week_list;   //星期
    QList<QLabel *> forecast_date_list;   //日期
    QList<QLabel *> forecast_aqi_list;    //天气指数
    QList<QLabel *> forecast_type_list;   //天气
    QList<QLabel *> forecast_typeIco_list;//天气图标
    QList<QLabel *> forecast_high_list;   //高温
    QList<QLabel *> forecast_low_list;    //低温

    //网络请求
    QString url;    //接口链接
    QString city;   //访问的城市
    QString cityTmp;//临时存放城市变量，防止输入错误城市的时候，原来的城市名称还在。
    WeatherTool tool;//天气工具对象
    QNetworkAccessManager* manager;//指针变量用于进行网络请求

    //本地数据
    Today today;
    Forecast forecast[6];

    // 天气图标映射表
    QMap<QString, QString> weatherIconMap;

    //绘制日出日落所需变量，用于容纳数据做标准
    static const QPoint sun[2];//日出日落底线
    static const QRect sunRizeSet[2];// 日出日落时间
    static const QRect rect[2];// 日出日落圆弧



};


#endif // MAINWINDOW_H





















